package com.dc.refactoring._6_处理概括关系._11_ReplaceInhertanceWithDelegation.step1;

import java.util.Vector;

/**
 * Description: 将继承关系修改为委托关系
 * @author: gdc
 * @date: 2020/12/13
 * @version 1.0
 */
public class MyStack extends Vector {

    // step 1 在子类中新建一个字段，使其引用超类的一个实例，并将它初始化为this
    private Vector vector = this;

    // step 2 修改子类内的所有函数，使它们使用委托关系
    /*public void push(Object element) {
        insertElementAt(element, 0);
    }*/

    public void push(Object element) {
        vector.insertElementAt(element, 0);
    }

    /*public Object pop() {
        Object result = firstElement();
        removeElementAt(0);
        return result;
    }*/

    public Object pop() {
        Object result = vector.firstElement();
        vector.removeElementAt(0);
        return result;
    }
}
